package com.hrbxlh.virtualization.constant;

import com.hrbxlh.virtualization.util.PropertiesUtil;

/**
 * @author cheer
 */
public final class RancherConstant {

    /**
     * Rancher Server的ip
     */
    private static final String SERVER_IP =
            PropertiesUtil.getProperty(GlobalConstant.VIRTUALIZATION_CONFIG_FILE, "rancher-ip");

    /**
     * Rancher Server的端口
     */
    private static final String SERVER_PORT =
            PropertiesUtil.getProperty(GlobalConstant.VIRTUALIZATION_CONFIG_FILE, "rancher-port");

    /**
     * 使用的Rancher api的版本
     */
    private static final String API_VERSION =
            PropertiesUtil.getProperty(GlobalConstant.VIRTUALIZATION_CONFIG_FILE, "rancher-api-version");

    /**
     * api接口前缀
     */
    private static final String URL_PREFIX =
            "http://" + SERVER_IP + ":" + SERVER_PORT + "/" + API_VERSION;

    /**
     * 使用的Rancher环境名称
     */
    private static final String ENV =
            PropertiesUtil.getProperty(GlobalConstant.VIRTUALIZATION_CONFIG_FILE, "rancher-env");

    /**
     * 查看Rancher环境集合的api
     */
    public static final String LIST_PROJECTS_URL = URL_PREFIX + "/projects";

    /**
     * 解析Rancher环境Id的JsonPath
     */
    public static final String ENV_ID_JSON_PATH = "$.data[?(@.name == '" + ENV + "')].id";

    /**
     * 查看指定环境中主机集合的api接口模板
     * 第一个 %s 为环境id
     */
    public static final String LIST_HOSTS_URL = URL_PREFIX + "/projects/%s/hosts";

    /**
     * 创建容器的api接口模板
     * 第一个 %s 为创建后的容器所在的环境id
     */
    public static final String CREATE_CONTAINER_URL = URL_PREFIX + "/projects/%s/container";

    /**
     * 用户退出多久后停止容器，单位：秒
     */
    public static final String STOP_DELAY =
            PropertiesUtil.getProperty(GlobalConstant.VIRTUALIZATION_CONFIG_FILE, "container-stop-delay");

    /**
     * 镜像uuid前缀
     */
    public static final String IMAGE_UUID_PREFIX = "docker:";

    /**
     * 删除容器的api接口模板
     * 第一个 %s 为容器所在的环境id
     * 第二个 %s 为要删除的容器在Rancher中的id
     */
    public static final String DELETE_CONTAINER_URL = URL_PREFIX + "/projects/%s/container/%s";

    /**
     * 查询容器的api接口模板
     * 第一个 %s 为容器所在的环境id
     * 第二个 %s 为容器在Rancher中的id
     */
    public static final String GET_CONTAINER_URL = URL_PREFIX + "/projects/%s/container/%s";

    /**
     * 启动容器的api接口模板
     * 第一个 %s 为容器所在的环境id
     * 第二个 %s 为容器在Rancher中的id
     */
    public static final String START_CONTAINER_URL = URL_PREFIX + "/projects/%s/container/%s/?action=start";

    /**
     * 停止容器的api接口模板
     * 第一个 %s 为容器所在的环境id
     * 第二个 %s 为容器在Rancher中的id
     */
    public static final String STOP_CONTAINER_URL = URL_PREFIX + "/projects/%s/container/%s/?action=stop";

    /**
     * 容器内部设置的vnc端口
     */
    public static final String VNC_PORT = "5901/tcp";

    /**
     * 容器内部设置的剪切板服务端口
     */
    public static final String CLIPBOARD_PORT = "56000/tcp";

    /**
     * 剪切板访问地址
     * 第一个 %s 为主机
     * 第二个 %s 为端口
     */
    public static final String CLIPBOARD_URL = "http://%s:%s/clipboard";

    /**
     * 容器内部设置的ftp服务端口
     */
    public static final String FTP_PORT = "22/tcp";

    /**
     * FTP访问地址
     * 第一个 %s 为主机
     * 第二个 %s 为端口
     */
    public static final String FTP_URL = "%s:%s";
}
